由于数论的研究对象是整数集
,在不加说明的情况下本节的所有变量默认都定义在
上。
众所周知,在整数集上的除法运算是这样定义的:整数 除以整数 会得到一个 商(quotient) 和 余数(remainder),使得 。除法定理 表明,存在唯一的 与 ,满足 且 。在后面,我们记两个整数 与 的商与余数分别为 与 。
我们称 整除 ,当且仅当 。记作 。
依据整除的定义,显然有如下整除的性质成立:
- ,
- 若 ,则
- 若 且 ,则
- 若 且 ,则 对任意 与 成立
在最后一条性质中,我们称对整数 与 ,所有可以被写作 的整数为 与 的 整数线性组合,简称线性组合。更一般而言,对于一组整数 , 为这组数的一个线性组合,当且仅当存在一组整数 ,有
此外,对于能够同时整除 与 的 ,我们称其为 与 的 公约数。所有公约数中最大的数称作 最大公约数,记作 。依据良序原理,只要两个整数 与 不同时为 ,则 存在。
显然有如下关于最大公约数的性质成立:
,
欧几里得算法 可以用于在 的时间复杂度内快速求出两个数的最大公约数。其基于如下的引理:
若 ,
依据除法的定义,对给定的 与 存在 与 满足 。因此 是 与 的线性组合,基于整除的性质,对任意 ,如果有 且 ,则 ;变形该式子得到 ,因此 是 与 的线性组合。 同理得到对任意 ,如果有 且 ,则 ,这表明 与 的所有公因数与 与 的所有公因数完全相同,显然二者的最大公因数也相同,引理得证。
欧几里得算法可以被描述为一个定义在 上的状态机:
- 初始状态:需要求最大公因数的两个数组成的数对 。
- 转移规则: 。
- 终止条件与结果:当 时,状态机终止。得到 。
依据上面的引理,显然组成数对的两个数的最大公因数在状态转移过程中不会改变,因此该状态机是偏序正确的。考虑将状态机中的 作为状态机的一个派生变量。由于在每次转移中显然有 成立,该派生变量是严格递减的,因此该状态机必然会终止。由此我们证明了欧几里得算法的正确性。
裴蜀定理 是数论中的一条重要定理:
与 的最大公约数 是 与 的线性组合,即存在整数 与 使得
一列不全为零的整数 的最大公约数 是该列数的线性组合,即存在 使得
基于整除的性质,很容易得出推论:一个整数 是 与 的线性组合,当且仅当 。同理其是一列数 的线性组合,当且仅当。
该定理可以通过拓展欧几里得算法证明。拓展欧几里得算法又称粉碎机,其不仅可以计算两个整数的最大公因数,还可以通过记录一些额外信息从而以与欧几里得算法相同的速度计算该最大公因数对应着何种线性组合。
粉碎机是一个定义在 上的状态机:
- 初始状态:。
- 转移规则: 。式中 ,。
- 终止条件与结果:当 时,状态机终止。得到 。
该算法的终止性与计算 的偏序正确性显然。下面详细叙述我们如何推导出该状态机的初始状态与转移规则与为什么这样的转移规则是正确的。
容易发现,欧几里得算法中的 与 在转移过程中总可以表示成初始状态对应的 与 的某种线性组合,这启示我们可以引入一些变量来记录这一信息。具体而言,我们令 ,。初始状态下 而 ,从而得到状态机初始状态下 ,,, 。接下来考虑欧几里得算法的转移过程:
从而得到了状态机的转移规则。与此同时新状态中的 与 同样可以表示为 与 的线性组合,显然当状态机停止时, 也可以表示为 与 的线性组合,裴蜀定理得证。
为了验证这样的转移规则是偏序正确的,我们希望证明下面两条性质是保持不变式:
证明是显然的,此处略去。
粉碎机所得到的只是 的一种线性组合表示。事实上, 对应无限多种线性组合,这允许当粉碎机给出的结果不符合我们的需要时,可以在此基础上轻而易举地得到新的线性组合。例如,设粉碎机得到的结果为 ,一种简单的变换方法如下:
式中 为任意正整数。该变换的正确性显然。
最大公因数还有如下性质:
- 对任意,
- 且 当且仅当
- 若 且 ,则
- 若 且 ,则
与最大公因数对应的概念是 最小公倍数,记作 。关于最小公倍数只需记住一个重要结论为
利用已经学到的关于线性组合与最大公约数的知识,我们将解决两个数论领域的经典问题:
现有两个无刻度的水桶与无限的水源,容积分别为 升与 升。允许执行如下操作:
- 将一个水桶倒满水。
- 将一个水桶倒空。
- 将一个水桶中的水倒向另一个水桶,直至该水桶空或另一水桶满。
试判断对于任意的 ,能否恰好得到 升水?若可以,给出操作方法。
显然我们可以建立一个关于水桶中盛水的状态机,其定义在 上,状态机内的状态 代表两个水桶各自的盛水量。
- 装满水桶 A:若 ,
- 装满水桶 B:若 ,
- 倒空水桶 A:
- 倒空水桶 B:
- 将水桶 A 的水倒入水桶 B:
- 将水桶 B 的水倒入水桶 A:
通过观察上面的转移规则,我们可以总结出下面的引理:
每一个水壶内的水量总是两个水壶的容积 与 的线性组合。
通过证明该引理为保持不变式并利用不变性原理即可得证。对于上述所有转移规则,保持不变性显然,证明此处略去。
随后依据裴蜀定理的推论,可以得出结论:可以通过上述操作得到 升水,当且仅当 。
利用粉碎机,我们可以得到目标水量 对应的 与 的线性表示。对于线性表示的系数 与 ,可以认为系数为正代表“操作过程中一共将对应的水桶从空装满的次数”,而为负代表“操作过程中一共将对应的水桶从满倒空的次数”,这一线性组合就生动表现了接入的水量与倒去的水量之差,也就是留在水桶中的总水量。因此我们的操作方法呼之欲出,为了方便叙述,下面我们假设 而 (可以通过上面给出的变换方法更改系数的正负性):
- 装满水桶 A。
- 将水桶 A 的水倒入水桶 B。若水桶 B 满,倒空水桶 B,重复这一步。若水桶 A 空,返回第一步。
反复重复这一过程,依据上面的推导,当水桶 B 中的水恰好为目标的水量时,我们一定恰好执行了 次步骤一,并倒空了水桶 B 次。在实际操作时,我们根本不需要在意我们执行了该步骤多少次。
现有点数为 与 的牌若干,且 。试问是否存在一些无法由这些牌凑出的点数?
质数(Prime) 是大于 且只能被 与本身组成的数。其余的数称作 合数(Composite)。质数是数论的核心概念之一,现代数学有许多关于质数的未解之谜。质数在整数中的密度有着明确上界,且在逐渐减小。质数定理 表明,所有小于 的质数个数 满足
几千年来数学家都希望找到一个能够精确刻画质数分布的定理,但至今仍未实现。尽管如此,人们还是发现了一些虽然不精确但是十分常用的质数分布定理。例如:
切比雪夫质数定理:
伯特兰-切比雪夫定理:对 ,必然存在一质数 满足 。
数论领域有一个重要的定理为 唯一分解定理(Unique Factorization Theorem):
每个不为 的正整数都是一个唯一的弱递减质数序列的乘积。
我们需要证明两个引理:
- 引理一:每个不为 的正整数都可以表示为一列质数的乘积。
- 引理二:设 是质数,若 ,则 。
使用强归纳法证明。
归纳假设 :, 是一列质数序列的乘积。
基本情况: 可以表示为仅包含自身的质数序列乘积。
归纳步骤:假设对 , 为真,欲证明 成立,分为两种情况:
- 是质数,则可以简单表示为仅包含自身的质数序列乘积。
- 是合数,设 ,由于 , 与 为真,可表示为 ,, 与 均为质数。则 ,是一列质数序列的乘积。
故 得证,依据归纳法原引理得证。
此处只证明该引理的一个简单版本:设 是质数,若 ,则 与 至少有一条成立。该简化命题可利用归纳法自然推广至引理二。
该引理证明分两种情况:
- 若 ,依据质数的定义显然 。
- 若 ,依据质数的定义显然 。依据裴蜀定理,存在 与 满足 。等式两边同乘 得到 ,故 是 与 的线性组合。由于 且 ,依据整除的性质,。
引理一得证后,我们只需证明该质数序列在不考虑次序的情况下唯一。
考虑基于良序原理的反证法:设存在由一些存在不止一种弱递减的质数序列乘积正整数组成的集合。基于良序原理,设 为该集合中最小的整数,基于我们的假设,将其表示为
其中 与 均为一系列弱递减的质数,且 。
若 ,则对任意 都有 。与此同时,因为 即 ,依据引理二,存在 使得 ,与前述的 矛盾,故该情况不成立。
若 ,则考虑 ,即 存在不止一种弱递减的质数序列乘积,但 ,与 为该集合中最小的整数矛盾,故该情况不成立。
综合两种情况,假设不成立,不存在有不止一种弱递减的质数序列乘积的正整数,唯一分解定理得证。
我们称 与 模 同余,当且仅 ,记作 。根据同余的字面意思,很容易得出一个等价定义: 当且仅当 。证明此处略去。
基于同余的定义,很容易得到同余关系与定义在 上的相等关系具有相同的性质,具体而言,它们都是 等价关系。即具有:
- 自反性:
- 对称性: 当且仅当
- 传递性:若 且 ,则
以及一条很重要的推论:
基于这点,我们可以这样看待模 同余:它定义了一种将 划分为 个集合的方式,这 个集合叫做 同余类 或 剩余类。可以证明同余运算与普通的代数运算十分相似,许多在普通代数运算中成立的性质在同余运算中同样满足。例如:
若 且 ,则 ,且 。
这表明,为了计算一些大数加减乘之后模 的值,可以考虑直接先将乘数与加数模 ,中间的运算结果一旦大于 之后也立刻模 ,从而降低了计算难度。
更确切地说,所有 内的整数与定义在该集合上的两种运算 与 构成了 模 剩余类环,记作 。在该系统中,我们所熟知的加法与乘法性质均成立,例如交换律、结合律、乘法对加法的分配律等。
环是一个由元素集合 与定义在 上的两个运算 与 组成的代数系统,且满足:
- 是 Abel 群,即
- 零元 存在且唯一
- 每个元素 的 加法逆 存在且唯一
- 满足交换律、结合律
- 是 半群,即
- 对 满足分配律
依据该定义,环具有的一些基本性质举例:
有一些特殊的环,其运算具有更多优良性质,如:
- 满足交换律 的环称作 交换环。
- 存在单位元 的环称作 含幺环。
- 不存在零因子的环称作 无零因子环,无零因子环上有乘法消去律成立,即等式两边同除任何非 因子后等式仍然成立。
- 整环 是同时为交换环、含幺环、无零因子环且零元与单位元不等的环。
- 每个非零元 都有乘法逆 且零元与单位元不等的 含幺环 称作 除环。
- 域 是既为交换环又为除环的环。
我们最常见的环就是定义在 上的 整数环,它是最基础的 整环,但不是域。其它常见的环如下:
- 有理数环 、实数环 、复数环 既是整环也是域。
- 模 剩余系环 是交换环、幺环,当且仅当 为质数时为 整环、域,具体见下。
- 整数多项式环 是 整环。
在 上,所有的同余关系可以直接化为等价关系,因此我们可以直接将上面的性质重新叙述为若 且 ,则 且 。这与普通的代数运算的性质别无二致,因此我们在计算大数的加减乘后求余运算时可以自由地将某些大于 的数模 化为较小的数,并利用在一般代数运算中的简便方法,同时不影响计算结果。
然而,同余运算与普通的代数运算在一点上存在显著差异:求逆与约去。我们定义一个数 的 乘法逆 满足 。下文将简称乘法逆为 倒数。在 上,每一个非零实数都有倒数;在 上,仅有 与 有倒数,为各自本身;而在环 上,判定要稍微复杂一些。
我们称两个整数 互质,当且仅当两数没有共同的质约数,等价于 。显然 不与任何数互质, 与任何非自身的数互质。一个数在环上是否存在倒数的判定定理如下:
与 互质,当且仅当 在 上的倒数存在且唯一。
:依据裴蜀定理,由 得存在 与 使得 ,两边对 取余得到 ,这表明 的倒数存在且唯一,为 。
:由 ,依据同余的定义,。依据整除的定义,存在 使得 ,变形得 ,即 是 与 的线性组合,依据裴蜀定理推论,,即 ,得证。
除此之外,我们通过举例也可以得知我们不能像在普通代数中一样随意约去两个同余数的因数。具体而言,我们称一个数 在 上是 可约的(Cancellable),当且仅当对 ,
可约的判定定理为:
在 上是可约的,当且仅当 在 上的倒数存在。
该结论是显然的,约去 等同于等式两边同乘其乘法逆。总而言之, 是可约的, 的倒数存在, 与 互质三条性质是互相等价的。我们记在 上与 互质的数组成集合 。在实际运算中,我们希望 为质数,这能减少很多不必要的麻烦,因为显然此时 ,每一个环内的整数都有逆元。
欧拉 函数 被定义为计算所有小于 且与 互质的非负整数个数,即
中与 互质的数的个数
显然 。设 是质数,。此外,对于 ,由于每 个数就有 个数不与 互质( 的倍数),其余数均与 互质,容易得到 。
欧拉函数是 积性函数,即对于任意互质的数 ,,有 。
为了证明该性质,我们需要首先介绍介绍另一条定理——中国剩余定理:
若 , 互质且大于 ,则对任意 ,,存在 是该线性同余方程组的解:
且该解在模 意义下唯一。
更一般的形式是,设 是一列大于 且两两互质,令 ,则对任意整数列 ,存在 是该线性同余方程组的解:
且该解在模 意义下唯一。该解的构造方法如下:
另构造出一列数 ,其中 ,与这列数各自在 上的倒数 。方程组的解
积性函数的事实允许我们以相当简单的方法计算任何数的欧拉函数值。进一步地,搭配上唯一分解定理,我们可以得到欧拉函数的计算方法:
对任意整数 ,设 是 的所有互异的质约数
依据唯一分解定理,,其中 为 的质约数。则
还有一种基于计数规则的证明,会在 15. 基数法则与组合数学初步 中给出。
函数与 欧拉定理 紧密相关,欧拉定理的内容为:
若 与 互质,则
我们需要两个引理:
- 引理一:,当且仅当 。
- 引理二:若 ,。我们定义集合 ,则 。即 中元素对 的乘法是封闭的。
证明不难,具体过程此处略去。直接应用最大公约数的性质可以证明引理一;应用同余运算上乘法的性质可以直接证明引理二。
从这两个引理可以得到推论:若 ,则 ,
从该推论出发,我们考虑将左右两集合的所有元素相乘从而构建一个等式:
依据引理一, 中所有元素相乘后后得到的数仍然是可约的,将其约去即可得到欧拉定理
该定理解决了任意模数下任意大指数的幂的计算问题,并可以引申出大量推论,例如 费马小定理:
设 是质数且 ,则 ,或可等价为
费马小定理给出了当模数为质数时一种简便的求环 上每个数的倒数的方法,即计算 。
然而,欧拉定理仍然要求底数与模数互质,存在一定使用限制。我们可以考虑将其推广到底数与指数不互质的情形,从而处理任意模数下任意底数的幂次计算问题。先给出推论内容:
对任意 与 ,有
的情况显然,我们着重证明 的情况:
从该推论出发很容易得到一条比较简单的推论:
对任意 与 ,有 。
基于所学的数论知识,我们将分析数论的一大重要应用——密码学,具体来说,我们将研究 RSA 加密系统:
RSA 加密系统是一种典型的 非对称 加密算法。其最大优势在于,在正式通信前,消息的接收方与发送方不必提前接触以提前对密钥作出约定,发送方仅需接收方所发布的公开信息就可以向接收方发送只有接收方可以解密的加密消息。做到这点依赖于被称作 单向陷门函数 (Trapdoor One-way Function) 的技术。这类函数就如同计算上的“二极管”一样,已知函数输入很容易得到输出,但从输出倒推输入是十分困难甚至是不可能的。具体到 RSA 上,它使用大质数的乘积与因式分解作为“二极管”,这基于如下猜想:
低效分解猜想:给定两个大质数的乘积 ,不存在多项式时间内求解 与 的算法。
目前已经能够证实我们可以以 的时间复杂度将大质数的因式分解规约到大名鼎鼎的 NP 问题:SAT 问题上,因此低效分解猜想,本质上就是计算领域的著名问题——“P ?= NP",该问题至今仍未有明确答案。规约的过程简要说明如下:考虑设计一个简单的乘法检查器,其由具有 位输入与 位输出,内部由具有 位输出的乘法器与 位输入, 位输出的检查器连接组成,其中 为 与 的二进制表示的位数。我们向乘法器分别输入 与 ,向检查器输入 ,该电路会检查 是否成立,并输出对应信号。由于数字电路可以被形式化为命题公式,我们取该电路的命题公式做 轮 SAT 测试,在第 轮中,将乘法器中输入 的第 位固定为 ,输入欲分解的数 ,并测试在该情况下该命题公式能否满足,测试结果无论如何都能确定该位的具体值,在 轮 SAT 测试后,其中一个因数就能够分解出来,从而因式分解 位大数就被规约到了 次 SAT 测试上。
我们接下来详细讲一下 RSA 的工作流程:
通信开始前,信息的接收方需要创建两个密钥,一个为本地保密的 私钥,另一个为公开的 公钥。公钥与私钥通过如下流程生成:
- 通过具有高随机性的算法生成两个大质数 与 ,通常有数百位长。
- 计算 。
- 选择一个同样大的整数 ,且 。显然 。二元组 即为公钥,可以对外公开发布。
- 求 在 上的倒数 ,为私钥,秘密保存。
发送方获取到公钥后,可以将其用于加密将要发送的信息。设 为明文,加密方使用公钥加密该消息,得到密文
发送给接收方。
接收方接收到消息后,使用私钥解密该消息,得到明文
我们首先证明该加解密方案是有效的,即假设传输无错时,接收方总能解密出发送方希望发送的原文,也即我们想要证明,对不等的两个质数 与 ,设 ,,对任意 ,
从实用角度来说, 与 必然互质。因为若不是这样,我们会自然意识到 一定为 或 ,从而破解掉密文。然而由于 与 为质数且相当大,其倍数的分布相当稀疏,因此 与 不互质的概率微乎其微。不过后面仍然会证明即使去掉互质条件上面的性质依然成立(尽管这个性质对于 RSA 本身没有意义)。
先考虑 与 互质这一简单的情况,直接套用欧拉定理有
接着考虑 与 不互质的情况